/**
 * 
 */
package org.yelongframework.model.generator.freemarker.datamodel;

import java.util.Objects;

import org.yelongframework.core.support.ExtendAttributeSupport;
import org.yelongframework.model.generator.manager.GenFieldAndColumn;

/**
 * 模板模型字段
 * 
 * @since 1.0.0
 */
public class ModelGenModelFieldDataModel extends ExtendAttributeSupport {

	private static final long serialVersionUID = 3309887407832322973L;

	/** 字段列 */
	private final GenFieldAndColumn genFieldAndColumn;

	/** 主键 */
	private String primaryKey;

	/** 名称 */
	private String name;

	/** 强制的 */
	private String mandatory;

	/** 类型 */
	private String type;

	/** 长度 */
	private String length;

	/** 代码 */
	private String code;

	/** 代码首字母大写 */
	private String codePrefixUpperCase;

	/** 代码注解 */
	private String columnAnnotation;

	/** 列名称 */
	private String columnName;

	// ==================================================构造器==================================================

	/**
	 * @param genFieldAndColumn 字段列
	 */
	public ModelGenModelFieldDataModel(GenFieldAndColumn genFieldAndColumn) {
		this.genFieldAndColumn = Objects.requireNonNull(genFieldAndColumn, "genFieldAndColumn");
	}

	// ==================================================字段列==================================================

	/**
	 * @return 字段列
	 */
	public GenFieldAndColumn getGenFieldAndColumn() {
		return genFieldAndColumn;
	}

	// ==================================================主键==================================================

	/**
	 * @return 主键
	 */
	public String getPrimaryKey() {
		return primaryKey;
	}

	/**
	 * @param primaryKey 主键
	 */
	public void setPrimaryKey(String primaryKey) {
		this.primaryKey = primaryKey;
	}

	// ==================================================名称==================================================

	/**
	 * @return 名称
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name 名称
	 */
	public void setName(String name) {
		this.name = name;
	}

	// ==================================================强制的==================================================

	/**
	 * @return 强制的
	 */
	public String getMandatory() {
		return mandatory;
	}

	/**
	 * @param mandatory 强制的
	 */
	public void setMandatory(String mandatory) {
		this.mandatory = mandatory;
	}

	// ==================================================类型==================================================

	/**
	 * @return 类型
	 */
	public String getType() {
		return type;
	}

	/**
	 * @param type 类型
	 */
	public void setType(String type) {
		this.type = type;
	}

	// ==================================================长度==================================================

	/**
	 * @return 长度
	 */
	public String getLength() {
		return length;
	}

	/**
	 * @param length 长度
	 */
	public void setLength(String length) {
		this.length = length;
	}

	// ==================================================代码==================================================

	/**
	 * @return 代码
	 */
	public String getCode() {
		return code;
	}

	/**
	 * @param code 代码
	 */
	public void setCode(String code) {
		this.code = code;
	}

	// ==================================================代码首字母大写==================================================

	/**
	 * @return 代码首字母大写
	 */
	public String getCodePrefixUpperCase() {
		return codePrefixUpperCase;
	}

	/**
	 * @param codePrefixUpperCase 代码首字母大写
	 */
	public void setCodePrefixUpperCase(String codePrefixUpperCase) {
		this.codePrefixUpperCase = codePrefixUpperCase;
	}

	// ==================================================代码注解==================================================

	/**
	 * @return 代码注解
	 */
	public String getColumnAnnotation() {
		return columnAnnotation;
	}

	/**
	 * @param columnAnnotation 代码注解
	 */
	public void setColumnAnnotation(String columnAnnotation) {
		this.columnAnnotation = columnAnnotation;
	}

	// ==================================================列名称==================================================

	/**
	 * @return 列名称
	 */
	public String getColumnName() {
		return columnName;
	}

	/**
	 * @param columnName 列名称
	 */
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}

}
